/*
 *  IndexBuffer.h
 *  glow
 *
 *  Created by sunjun on 11-6-14.
 *  Copyright 2011 sunstdio. All rights reserved.
 *
 */

//////////////////////////////////////////////////////////////////////////

#ifndef __IndexBuffer__
#define __IndexBuffer__

//////////////////////////////////////////////////////////////////////////

#if defined __cplusplus

//////////////////////////////////////////////////////////////////////////

NAMESPACE_BEGIN(Render)

//////////////////////////////////////////////////////////////////////////

	// this class provides an object-oriented index object interface.
	class IndexBuffer : public GReference
	{
	public:		
		// constructor
		IndexBuffer();
		
		// destructor
		virtual ~IndexBuffer();

		// load the data
		VOID Load(const GData* data);

	private:
		// bind the index buffer
		VOID Bind(class Context* rc);

		// update the buffer
		VOID Update(const GData* data, BOOL created);
			
	private: 
		GPtr<class Context>mRCPtr;
		GDataPtr mDataPtr;
		U32	mObject;
		U32	mCount;
		U32	mStride;

	private: friend class Primitive;
	};

	//////////////////////////////////////////////////////////////////////////

	typedef GPtr<IndexBuffer>IndexBufferPtr;

//////////////////////////////////////////////////////////////////////////

NAMESPACE_END

//////////////////////////////////////////////////////////////////////////

#endif // __cplusplus

//////////////////////////////////////////////////////////////////////////

#endif // __IndexBuffer__

//////////////////////////////////////////////////////////////////////////